package com.mdd.front.service.yangyangLeadingEnterprise;

import com.mdd.common.core.PageResult;
import com.mdd.common.entity.yangyangLeadingEnterprise.TAppUser;
import com.mdd.common.entity.yangyangLeadingEnterprise.param.LoginParam;
import com.mdd.front.validate.common.PageValidate;
import com.mdd.front.validate.yangyangLeadingEnterprise.TAppUserCreateValidate;
import com.mdd.front.validate.yangyangLeadingEnterprise.TAppUserSearchValidate;
import com.mdd.front.validate.yangyangLeadingEnterprise.TAppUserUpdateValidate;
import com.mdd.front.vo.yangyangLeadingEnterprise.TAppUserDetailVo;
import com.mdd.front.vo.yangyangLeadingEnterprise.TAppUserListedVo;

/**
 * 【请填写功能名称】服务接口类
 * @author LikeAdmin
 */
public interface ITAppUserService {

    /**
     * 【请填写功能名称】列表
     *
     * @author LikeAdmin
     * @param pageValidate 分页参数
     * @param searchValidate 搜索参数
     * @return PageResult<TAppUserListedVo>
     */
    PageResult<TAppUserListedVo> list(PageValidate pageValidate, TAppUserSearchValidate searchValidate);

    /**
     *
     *
     * @author LikeAdmin
     * @param id 主键ID
     * @return TAppUserDetailVo
     */
    TAppUserDetailVo detail(Integer id);

    /**
     * 【请填写功能名称】新增
     *
     * @author LikeAdmin
     * @param createValidate 参数
     */
    void add(TAppUserCreateValidate createValidate);

    /**
     * 修改用户信息
     *
     * @author LikeAdmin
     * @param updateValidate 参数
     */
    void edit(TAppUserUpdateValidate updateValidate);

    /**
     * 【请填写功能名称】删除
     *
     * @author LikeAdmin
     * @param id 主键ID
     */
    void del(Integer id);

    /**
     * app登录
     * @param param
     * @return
     */
    String appUserLogin(LoginParam param);

    String updateAppUserPassword(LoginParam param);

    /**
     * 修改成新的手机号
     * @param param
     * @return
     */
    String updateAppUserPhone(LoginParam param);

    String appUserRegister(LoginParam param);

    /**
     * 忘记密码第一步
     * @param param
     * @return
     */
    String forgotPasswordStepOne(LoginParam param);

    /**
     * 忘记密码第二步
     * @param param
     * @return
     */
    String forgotPasswordStepTwo(LoginParam param);

    /**
     * 第三方登录绑定手机号
     * @param param
     * @return
     */
    String bindPhone(LoginParam param);

    /**
     * 根据id查询用户信息
     * @param userId
     * @return
     */
    TAppUser selectById(Integer userId);

    /**
     * 修改用户信息
     * @param appUser
     * @return
     */
    String updateById(TAppUser appUser);

    /**
     * 查询个人中心的用户信息（实时）
     * @param userId
     * @return
     */
    String selectUserForPersonalCenter(Integer userId);

    /**
     * 增加用户访客数量
     * @param userId
     * @return
     */
    String updateAppUserVisitorNumById(Integer userId);

    /**
     * 验证用户是否绑定企业
     * @param userId
     * @return
     */
    String checkUserEnterpriseFlag(Integer userId);

    /**
     * 第三方登录设置密码
     * @param param
     * @return
     */
    String bindPassword(LoginParam param);

    /**
     * 发送验证码
     * @param param
     * @return
     */
    String sendSms(LoginParam param);

    TAppUser selectUserByToken(String token);

    String loginOut(LoginParam param);

    /**
     * 注销账户
     * @param param
     * @return
     */
    String cancelAccount(LoginParam param);
}
